package insumos.dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import insumos.modelo.Usuario;

public class usuarioDAO {

    public Usuario obtenerPorIdInsumos(String idUsuario) {
        Usuario vo = new Usuario();
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/masters3", "root", "");
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("select idInsumos, tipo_tela,cantidad_tela,precio_tela,color_tela,color_hilo,cantidad_hilo,precio_hilo,tipo from insumos where idInsumos ='" + idUsuario + "'");
            if (rs.next()) {
                vo.setIdInsumos(rs.getString("idInsumos"));
                vo.setTipo_tela(rs.getString("tipo_tela"));
                vo.setCantidad_tela(rs.getString("cantidad_tela"));
                vo.setPrecio_tela(rs.getString("precio_tela"));
                vo.setColor_tela(rs.getString("color_tela"));
                vo.setColor_hilo(rs.getString("color_hilo"));
                vo.setCantidad_hilo(rs.getString("cantidad_hilo"));
                vo.setPrecio_hilo(rs.getString("precio_hilo"));
                vo.setTipo(rs.getString("tipo"));
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return vo;
    }

    public Collection<Usuario> buscarPorNombre(String nombre) {
        String query = "select idInsuamos,tipo_tela,cantidad_tela,precio_tela,color_tela,color_hilo,cantidad_hilo,precio_hilo,tipo from insumos where idInsumos like '%" + nombre + "%'";
        Collection<Usuario> c = new ArrayList<Usuario>();
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                Usuario vo = new Usuario();
                vo.setIdInsumos(rs.getString("idInsumos"));
                vo.setTipo_tela(rs.getString("tipo_tela"));
                vo.setCantidad_hilo(rs.getString("cantidad_hilo"));
                vo.setPrecio_tela(rs.getString("precio_tela"));
                vo.setColor_tela(rs.getString("color_tela"));
                vo.setColor_hilo(rs.getString("color_hilo"));
                vo.setCantidad_hilo(rs.getString("cantidad_hilo"));
                vo.setPrecio_hilo(rs.getString("precio_hilo"));
                vo.setTipo(rs.getString("tipo"));
                c.add(vo);
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return c;
    }

    public Usuario insertar(Usuario vo) {
        String query = "INSERT INTO insumos (idInsumos,tipo_tela,cantidad_tela,precio_tela,color_tela,color_hilo,cantidad_hilo,precio_hilo,tipo) " + "VALUES (?,?,?,?,?,?,?,?)";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, vo.getIdInsumos());
            stmt.setString(2, vo.getTipo_tela());
            stmt.setString(3, vo.getCantidad_tela());
            stmt.setString(4, vo.getPrecio_tela());
            stmt.setString(5, vo.getColor_tela());
            stmt.setString(6, vo.getColor_hilo());
            stmt.setString(7, vo.getCantidad_hilo());
            stmt.setString(8, vo.getPrecio_hilo());
            stmt.setString(9, vo.getTipo());
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo insertar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        return vo;
    }

    public Usuario actualizar(Usuario vo) {
        String query = "UPDATE insumos SET tipo_tela=?, cantidad_tela=?, precio_tela=?, color_tela=?, color_hilo=?, cantidad_hilo=?, precio_hilo?, tipo=?  WHERE idInsumos=?";
        try {
            Connection con = ConexionBD.obtenerConexion();
            PreparedStatement stmt = con.prepareStatement(query);
            stmt.setString(1, vo.getTipo_tela());
            stmt.setString(2, vo.getCantidad_tela());
            stmt.setString(3, vo.getPrecio_tela());
            stmt.setString(4, vo.getColor_tela());
            stmt.setString(5, vo.getColor_hilo());
            stmt.setString(6, vo.getCantidad_hilo());
            stmt.setString(7, vo.getPrecio_hilo());
            stmt.setString(8, vo.getTipo());

            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo actualizar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return vo;
    }

    public void eliminar(String idVentas) {
        String query = "DELETE FROM insumos WHERE idInsumos=?";
        try {
            Connection con = ConexionBD.obtenerConexion();
            PreparedStatement stmt = con.prepareStatement(query);
            stmt.setString(1, idVentas);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo eliminar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public Collection<Usuario> listarTodos() {
        Collection<Usuario> c = new ArrayList<Usuario>();
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("select idInsumos,tipo_tela,cantidad_tela,precio_tela,color_tela,color_hilo,cantidad_hilo,precio_hilo,tipo from insumos");
            while (rs.next()) {
                Usuario vo = new Usuario();
                vo.setIdInsumos(rs.getString("idInsumos"));
                vo.setTipo_tela(rs.getString("tipo_tela"));
                vo.setCantidad_tela(rs.getString("cantidad_tela"));
                vo.setPrecio_tela(rs.getString("precio_tela"));
                vo.setColor_tela(rs.getString("color_tela"));
                vo.setColor_hilo(rs.getString("color_hilo"));
                vo.setCantidad_hilo(rs.getString("cantidad_hilo"));
                vo.setPrecio_hilo(rs.getString("precio_hilo"));
                vo.setTipo(rs.getString("tipo"));
                c.add(vo);
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return c;
    }
}

